package com.sky.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Map;

public class JwtUtill {
    /**
     * 采用hs256算法
     * @param  secretKey jwt秘钥
     * @param  ttlMillis   过期时间
     * @param  claims 身份信息
     */
    public static String creatJwt(String secretKey, long ttlMillis, Map<String,Object> claims){
        // 密钥算法
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
        // 生成JWT的时间
        long expMillis = System.currentTimeMillis() + ttlMillis;
        // 设置token过期时间
        Date exp = new Date(expMillis);
        // 生成token
        JwtBuilder jwtBuilder = Jwts.builder()
                .setClaims(claims)
                .signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8))
                .setExpiration(exp);
        return jwtBuilder.compact();
    }

    /**
     * 解密token
     * @param secretKey
     * @param token
     * @return
     */
    public static Claims parseJwt(String secretKey,String token){
        Claims body = Jwts.parser()
                .setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))
                .parseClaimsJws(token).getBody();
        return body;
    }



}
